
package highvoltage;

import highvoltage.skeletonHelpers.*;

/**
 * Az idõsítésért felel. A mûködés szinkron, bizonyos idõközönként órejelet
 * generál, és ezt az órajelet használja fel minden olyan osztály, amiz
 * ISteppable- t valósítja meg.
 * 
 * @author Tomi
 * @version 1.0
 * @created 16-márc.-2010 21:08:07
 */
public class Timer
{

	/**
	 * A Timer által órajellel ellátandó objektum.
	 */
	private ISteppable _obj;
	/**
	 * A Timer órajelének frekvenciája (órajel / másodperc).
	 */
	private int _ticksPerSecond;

	public Timer()
	{
		Logger.print( "Timer::Timer()", this );
		Logger.ret();
	}

	/**
	 * Beállítja a ticksPerSecond változó értékét.
	 * 
	 * @param value
	 *            A beállítandó érték.
	 */
	public void setTicksPerSecond( int value )
	{
		Logger.print( "Timer::setTicksPerSecond(value)", this );
		Logger.ret();
	}

	/**
	 * Elindítja a timert.
	 */
	public void start()
	{
		Logger.print( "Timer::start()", this );

		while ( !UserInput.yesNo( "Megalljon a Timer?" ) )
		{
			Logger.call( "ISteppable::step()", _obj );
			_obj.step();
		}

		Logger.ret();
	}

	/**
	 * Beállítja az órajellel ellátandó objektumot.
	 * 
	 * @param value
	 *            Az értékül választott objektum.
	 */
	public void setObj( ISteppable value )
	{
		Logger.print( String.format( "Timer::setObj( value | %d )", value.hashCode() ), this );
		_obj = value;
		Logger.ret();
	}

}
